/**
 * 组件工厂服务
 * 负责组件的动态创建和管理
 */
import { componentMap } from '../components/library'

class ComponentFactory {
  /**
   * 创建组件实例
   * @param {String} componentName 组件名称
   * @returns {Object} 组件配置
   */
  createComponent(componentName) {
    // 检查组件是否存在
    if (!componentMap.has(componentName)) {
      console.error(`组件 ${componentName} 不存在`)
      return null
    }
    
    // 获取组件配置
    const config = componentMap.get(componentName)
    
    // 返回组件配置的深拷贝
    return JSON.parse(JSON.stringify(config))
  }
  
  /**
   * 获取组件属性配置
   * @param {String} componentName 组件名称
   * @returns {Object} 组件属性配置
   */
  getComponentProperties(componentName) {
    // 检查组件是否存在
    if (!componentMap.has(componentName)) {
      console.error(`组件 ${componentName} 不存在`)
      return null
    }
    
    // 获取组件配置中的样式设置
    const config = componentMap.get(componentName)
    return config.setStyle
  }
  
  /**
   * 加载扩展组件
   * @param {Object} componentConfig 组件配置
   * @returns {Boolean} 是否加载成功
   */
  loadExtensionComponent(componentConfig) {
    try {
      // 检查配置是否有效
      if (!componentConfig.component || !componentConfig.style || !componentConfig.setStyle) {
        console.error('无效的组件配置')
        return false
      }
      
      // 添加到组件Map
      componentMap.set(componentConfig.component, componentConfig)
      return true
    } catch (error) {
      console.error('加载扩展组件失败', error)
      return false
    }
  }
}

// 创建单例实例
const componentFactory = new ComponentFactory()

export default componentFactory 